package com.tbit.uqbike.service.business;

import com.tbit.common.entity.view.Result;
import com.tbit.uqbike.object.pojo.GiftCard;
import com.tbit.uqbike.object.pojo.dto.GiftCardBatchUpdateDTO;
import com.tbit.uqbike.object.pojo.vo.GiftCardVO;
import com.tbit.uqbike.object.pojo.vo.GiveRideCardVo;
import com.tbit.uqbike.object.value.LoginInfo;

import java.util.List;

/**
 * @author chenmengran
 * @Description: 礼品卡
 * @date 2019\12\28 002814:59
 */
public interface GiftCardService {

    /**
     * 添加礼品卡
     *
     * @param loginInfo
     * @param giftCard
     */
    void addEdit(LoginInfo loginInfo, GiftCard giftCard);

    /**
     * 分页查找
     *
     * @param loginInfo
     * @param accountId
     * @param pageNO
     * @param rowCount
     * @return
     */
    List<GiftCardVO> queryPage(LoginInfo loginInfo, Integer accountId, Integer pageNO, Integer rowCount, String sortName, String cardNO, Long startTime, Long endTime, Integer userId, Integer cardType);

    /**
     * 查询数量
     *
     * @param accountId
     * @return
     */
    Integer queryCount(Integer accountId, String cardNO, Long startTime, Long endTime, Integer userId, Integer cardType);

    /**
     * 通过手机分页查询
     *
     * @param loginInfo
     * @param accountId
     * @param phone
     * @param pageNO
     * @param rowCount
     * @param sortName
     * @param sign
     * @return
     */
    List<GiftCard> queryPageByPhone(LoginInfo loginInfo, Integer accountId, Integer userId, Integer pageNO, Integer rowCount,
                                    String sortName, String sign, String cardNO, Long startTime, Long endTime);

    /**
     * 根据用户id查询和运营区域id查询用户礼品卡数量
     *
     * @param accountId 运营区域id
     * @param userId    用户id
     * @param cardNo    礼品卡编号
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 记录总数
     */
    Integer selectTotalCount(Integer accountId, Integer userId, String cardNo, Long startTime, Long endTime);

    /**
     * 批量添加
     *
     * @param num
     */
    List<String> addBatch(GiftCard giftCard, int num);

    /**
     * 批量赠送用户礼品卡信息
     *
     * @param giftCardBatchUpdateDTO 。
     * @return 。
     */
    Result<List<GiveRideCardVo>> batchSendGiftCard(GiftCardBatchUpdateDTO giftCardBatchUpdateDTO);

}
